import numpy as np
from matplotlib import pyplot as plt


# 定义方程转换为 y = f(x) 的形式
def eq1(x):
    return (x - 1) / 2  # x - 2y = 1 → y = (x-1)/2


def eq2(x):
    return (11 - 3 * x) / 2  # 3x + 2y = 11 → y = (11-3x)/2

if __name__ == '__main__':
    # 生成 x 值范围 [-1, 5]
    x = np.linspace(-1, 5, 400)


    # 计算 y 值
    y1 = eq1(x)
    y2 = eq2(x)


    # 计算交点（通过解联立方程）
    # 联立方程解得：x = 3, y = 1
    intersect_x = 3
    intersect_y = 1


    # 绘制两条直线
    plt.plot(x, y1, label='x - 2y = 1', color='blue')
    plt.plot(x, y2, label='3x + 2y = 11', color='orange')

    # 设置中文字体（如果不需要可删除）
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False

    # 标记交点
    plt.scatter(intersect_x, intersect_y, color='red', zorder=5)
    plt.annotate(f'两条直线交点 ({intersect_x}, {intersect_y})',
                 xy=(intersect_x, intersect_y),
                 xytext=(3.5, 0.5),
                 arrowprops=dict(facecolor='black', arrowstyle='->'))

    # 设置图形参数
    plt.title("方程的解在平面中展示", fontsize=14)
    plt.xlabel('x', fontsize=12)
    plt.ylabel('y', fontsize=12)
    plt.grid(True, linestyle='--', alpha=0.7)
    plt.axhline(0, color='black', linewidth=0.5)
    plt.axvline(0, color='black', linewidth=0.5)
    plt.xlim(-1, 5)
    plt.ylim(-2, 6)
    plt.legend()


    plt.show()
